为什么我们在 selenium webdriver 中需要番石榴?

Why we need guava in selenium webdriver?

我用 maven 创建了 selenium web 驱动程序项目。 我在某处读到我们需要添加番石榴依赖性。

有人知道为什么我们需要 guava 依赖 selenium 吗?

番石榴

Guava 是由 Google 开发的基于 Java 的开源库。它有助于开发人员和测试自动化工程师采用最佳编码实践,并有助于减少编码错误。它为集合、缓存、原语支持、并发、通用注释、字符串处理、I/O 和验证提供实用方法。


Maven 依赖

Selenium v​​3.141.59 客户端开始,Maven Dependency 是:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>25.0-jre</version>
</dependency>

tl;博士

您可以在以下位置找到一些相关讨论:

这是我能安排的最好的信息。

总结答案:

Selenium uses Guava libraries for Function and Predicates.

以上引用(第 126 页)的参考:

https://books.google.de/books?id=PMNiDwAAQBAJ&pg=PA126&lpg=PA126&dq=selenium+and+guava&source=bl&ots=hxRq2Dq61Y&sig=ACfU3U3ro_HhI4cpejvSSSEvWYZMF99l9g&hl=en&sa=X&ved=2ahUKEwiO7oOP6PHmAhUCCewKHfnJDSs4ChDoATABegQIChAB#v=onepage&q&f=false

关于 Selenium 中使用的函数和谓词的简要说明:

Guava 提供了两个基本的 "functional" 接口:

  • Function,具有单一方法 B apply(A input)。 Function 的实例通常被期望是引用的 透明——没有副作用——并且与平等一致, 也就是说,a.equals(b) 意味着 function.apply(a).等于(function.apply(b))

示例:

public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }

here你也可以查一下。主要用于Selenium Waits(隐式除外)。

  • Predicate,它有单一方法 boolean apply(T input)。 Predicate 的实例通常预计是无副作用的 并与equals一致。

示例:

here 您可以在 Guava 官方文档

上找到 Function and Predicates 的详细信息

希望对你有所帮助